package com.example.demo.util;

import com.alibaba.fastjson.JSONObject;

import java.util.Objects;

/**
 * 极验证识别测试
 */
public class GeetestRecognition {

    private static final String api = "http://api.ddocr.com/api/gateway.jsonp";
    //这里为您的后台的首页的，开发者信息的接口秘钥
    private static final String secretkey = "c28e9f3e2c6041408d86292db25e772e";

    /**
     * @param gt        所在网站极验的gt值
     * @param referer   来源页面地址
     * @param challenge 通过请求目标站配置项获取，每次获取到的challenge仅能使用一次。如网站为极验感知此参数可不填，比如拉钩
     * @return
     */
    public static String recognition(String gt, String referer, String challenge) {

        StringBuffer body = new StringBuffer();
        body.append("wtype=geetest&secretkey=").append(secretkey);
        body.append("&gt=").append(gt).append("&referer=").append(referer);
        body.append("&challenge=").append(challenge == null ? "" : challenge);
        //如果想使用自己的代理ip传进来即可
        body.append("&ip=");
        body.append("&proxyuser=");
        body.append("&proxypwd=");
        body.append("&supporttype=");//如果遇到特殊图片，请传3，其他则不用
        String resp = HttpUtils.getInstance().post(api, body.toString());

        JSONObject jo = JSONObject.parseObject(resp);
        // 校验是否验证成功
        if (Objects.equals("识别成功", jo.get("msg").toString())) {

            JSONObject jos = JSONObject.parseObject(jo.get("data").toString());
            String validate = jos.get("validate").toString();
            // System.err.println("验证码识别成功 ---> " + validate);
            return validate;
        } else {
            return null;
        }
    }
}

